home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- '''Contains the methods to import mail via Google Apps Email Migration API.
-
- MigrationService: Provides methids to import mail.
- '''
- __author__ = 'google-apps-apis@googlegroups.com'
- import base64
- import gdata
- import gdata.apps.service as gdata
- import gdata.service as gdata
- from gdata.apps import migration
- API_VER = '2.0'
-
- class MigrationService(gdata.apps.service.AppsService):
- '''Client for the EMAPI migration service. Use either ImportMail to import
- one message at a time, or AddBatchEntry and SubmitBatch to import a batch of
- messages at a time.
- '''
-
- def __init__(self, email = None, password = None, domain = None, source = None, server = 'apps-apis.google.com', additional_headers = None):
- gdata.apps.service.AppsService.__init__(self, email = email, password = password, domain = domain, source = source, server = server, additional_headers = additional_headers)
- self.mail_batch = migration.BatchMailEventFeed()
-
-
- def _BaseURL(self):
- return '/a/feeds/migration/%s/%s' % (API_VER, self.domain)
-
-
- def ImportMail(self, user_name, mail_message, mail_item_properties, mail_labels):
- '''Import a single mail message.
-
- Args:
- user_name: The username to import messages to.
- mail_message: An RFC822 format email message.
- mail_item_properties: A list of Gmail properties to apply to the message.
- mail_labels: A list of labels to apply to the message.
-
- Returns:
- A MailEntry representing the successfully imported message.
-
- Raises:
- AppsForYourDomainException: An error occurred importing the message.
- '''
- uri = '%s/%s/mail' % (self._BaseURL(), user_name)
- mail_entry = migration.MailEntry()
- mail_entry.rfc822_msg = migration.Rfc822Msg(text = base64.b64encode(mail_message))
- mail_entry.rfc822_msg.encoding = 'base64'
- mail_entry.mail_item_property = map((lambda x: migration.MailItemProperty(value = x)), mail_item_properties)
- mail_entry.label = map((lambda x: migration.Label(label_name = x)), mail_labels)
-
- try:
- return migration.MailEntryFromString(str(self.Post(mail_entry, uri)))
- except gdata.service.RequestError:
- e = None
- raise gdata.apps.service.AppsForYourDomainException(e.args[0])
-
-
-
- def AddBatchEntry(self, mail_message, mail_item_properties, mail_labels):
- '''Add a message to the current batch that you later will submit.
-
- Args:
- mail_message: An RFC822 format email message.
- mail_item_properties: A list of Gmail properties to apply to the message.
- mail_labels: A list of labels to apply to the message.
-
- Returns:
- The length of the MailEntry representing the message.
- '''
- mail_entry = migration.BatchMailEntry()
- mail_entry.rfc822_msg = migration.Rfc822Msg(text = base64.b64encode(mail_message))
- mail_entry.rfc822_msg.encoding = 'base64'
- mail_entry.mail_item_property = map((lambda x: migration.MailItemProperty(value = x)), mail_item_properties)
- mail_entry.label = map((lambda x: migration.Label(label_name = x)), mail_labels)
- self.mail_batch.AddBatchEntry(mail_entry)
- return len(str(mail_entry))
-
-
- def SubmitBatch(self, user_name):
- '''Send a all the mail items you have added to the batch to the server.
-
- Args:
- user_name: The username to import messages to.
-
- Returns:
- A HTTPResponse from the web service call.
-
- Raises:
- AppsForYourDomainException: An error occurred importing the batch.
- '''
- uri = '%s/%s/mail/batch' % (self._BaseURL(), user_name)
-
- try:
- self.result = self.Post(self.mail_batch, uri, converter = migration.BatchMailEventFeedFromString)
- except gdata.service.RequestError:
- e = None
- raise gdata.apps.service.AppsForYourDomainException(e.args[0])
-
- self.mail_batch = migration.BatchMailEventFeed()
- return self.result
-
-
-